This invention relates to digital computers; and more particularly to microprogrammed digital computers for time-multiplexing multiple tasks.
By a microprogrammed digital computer is herein meant a digital computer that is constructed in the Wilkes' sense. That is, the computer includes a control memory that stores a plurality of control words; and those control words are sequentially read from the control memory to direct the operation of the computer's logic gates. This is discussed, for example, in a paper titled "Microprogramming: A Tutorial and Survey of Recent Developments" by Tomlinson G. Rauscher and Phillip M. Adams, IEEE Transactions on Computers, Volume C-29, No. 1, January, 1980, pp. 2-5.
Typically, control words in the control memory are arranged into a plurality of groups; and each of those groups performs a particular function. For example, one particular grouping of control words might perform a multiply operation; another grouping of control words might perform a divide operation; etc. These groupings of control words are herein called tasks.
Now the present invention is directed to the time sequence in which the various tasks in a control memory are performed. In the prior art, for example, these tasks are often performed one-at-a-time in a serial fashion. In that case, once a particular task is started, only control words from that task are executed until the task is complete; and only then can another task be started.
But a problem with serially executing tasks is that the computer's operation is usually quite inefficient. Suppose for example that one control word in a particular task operates to send a message that calls for a response message to be sent back. Specifically, the sent message might be a request for data from an external memory, with the response message being the memory data. Now suppose that the next control word in that task operates on that response message. Then if the response takes a relatively long time to be generated and received, the computer must wait and do nothing between the time that it calls for the response message and the time when the response message is actually received.
In order to overcome this problem, multiple tasks can be performed by the computer in some time-multiplexed fashion such that the computer is never merely waiting for a response message. But time-multiplexing tasks in a control memory presents a new set of problems. In particular, some means must be provided for keeping tract of the number of tasks that are simultaneously being executed and for restarting those tasks which were previously stopped. Also, the time that it takes to perform these bookkeeping operations must be minimized so that the time that it takes to switch tasks does not take longer than the time that it takes to receive a called-for response message.
Accordingly, it is a primary object of this invention to provide a digital device having improved time-multiplexing capabilities.
Another object of this invention is to provide a digital device which time-multiplexes multiple tasks with improved efficiency.